package unit03.day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 *		dat=new Date(l)  dat.setTime(l)		calendar.setTime(dat)
 *		-------------------------------> 	----------------------->
 * long <-------------------------------Date<-----------------------Calendar
 * 				dat.getTime()					calendar.getTime()
 * */

public class task {

	public static void main(String[] args) throws ParseException {
		/**
		 * 1.使用setTime和getTime方法操作时间毫秒
		 * 	1)获取1970年1月1日零时距当前时刻的毫秒数
		 * 	2)获取明天此时此刻的日期-时间
		Date now = new Date();
		long time = now.getTime();
		System.out.println(time);
		time += 3600000*24;
		now.setTime(time);
		System.out.println(now);
		* */
		
		/**
		 * 2.使用format格式化日期
		 * 控制台输出当前时间，格式:yyyy-MM-dd HH:mm:ss
		Date now = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String day = sdf.format(now);
		System.out.println(day);
		* */
		
		/**
		 * 3.使用parse方法将字符串解析为日期
		String date = "2020-06-05 11:24:35";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date day = sdf.parse(date);
		System.out.println(day);
		* */
		
		/**
		 * 4.测试getInstance方法
		 * 	1)获取Calendar实例所属的实际类型，并输出
		 * 	2)将Calendar对象转换为Date对象，并输出Date对象
		 * 	3)使用GregorianCalendar构建对象，改对象对应的日期为2013年12月25日，将GregorianCalendar对象转换为Date对象，并输出该对象
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		Date day = calendar.getTime();
		System.out.println(day);
		* */
		
		/**
		 * 5.调用set方法设置日期分量
		 * 	1)使用Calendar类表示时间，设置日期为2013年12月25日，时间为此时此刻的时间，并将该日期转为Date输出
		 * 	2)修改Calendar类的对象，将日期中的日设置为32，其余不变，然后将该日期转为Date输出
		 
		Calendar calendar = Calendar.getInstance();
		calendar.set(calendar.YEAR, 2013);
		calendar.set(calendar.MONTH, 11);
		calendar.set(calendar.DAY_OF_MONTH, 32);	//自动变成2014年1月1日
		Date now = calendar.getTime();
		System.out.println(now);
		* */
		
		/**
		 * 6.使用get方法获取Calendar类表示的日期时间各个分量
		 
		Calendar calendar = Calendar.getInstance();
		calendar.set(calendar.YEAR, 2013);
		calendar.set(calendar.MONTH, 11);
		calendar.set(calendar.DAY_OF_MONTH, 28);
		System.out.println("2013年12月25日是周"+(calendar.get(Calendar.DAY_OF_WEEK) - 1));
		* */
		
		/**
		 * 7.输出2016年各个月份的天数
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(calendar.YEAR, 2016);
		calendar.set(calendar.MONTH, 0);
		calendar.set(calendar.DAY_OF_MONTH, 1);
		for(int i = 0; i < 12;i++) {
			calendar.set(calendar.MONTH, i);
			System.out.println(i+1+"月有"+calendar.getActualMaximum(calendar.DAY_OF_MONTH)+"天");
		}
		 * */
		
		/**
		 * 8.输出一年后再减去3个月的日期
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(calendar.YEAR, 2016);
		calendar.set(calendar.MONTH, -3);
		calendar.set(calendar.DAY_OF_MONTH, 1);
		System.out.println(calendar.getTime());
		 * */
		
		/**
		 * 1.用户输入产品生产日期和保质期，计算促销日期。规则：到保质期前14天所在周的周三为促销日
		 * */
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入生产日期(yyyy-MM-dd):");
		String production_date = scan.next();
		System.out.println("请输保质期(天数):");
		int days = scan.nextInt();
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date product_date = sdf.parse(production_date);
		cal.setTime(product_date);
		cal.add(cal.DAY_OF_MONTH, days);
		cal.add(cal.DAY_OF_MONTH, -14);		//11月27号
		cal.getFirstDayOfWeek();
//		Date sales_day = cal.getTime();
		System.out.println(cal.get(cal.DAY_OF_WEEK) - 1);		//周二
	}
}
